﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CapaGestion;
using CapaGestion.Spring;
using CRUD.DAO;
using CapaNegocios;
using GestionadorBaseDatos;
using System.Text;
using System.IO;


public partial class InterfazKamalde_AdministrarUsuario : Base
{
    public static Usuario usu = new Usuario();
    public IGestionUsuario gestionarUsuario = AdministradorGestion.getGestionarUsuario();
    public IGestionApuesta gestionarApuesta = AdministradorGestion.getGestionarApuesta();

    protected void Page_Load(object sender, EventArgs e)
    {
        if ((Session["login"] == null))
        {
            Response.Redirect("inicio.aspx");
        }
        else
        {
            if (IsPostBack)
            {
                if (Request.Form["cont"] == "1")   //if user clicks "OK" to confirm 
                {
                    Request.Form["cont"].Replace("1", "0");
                    usu.Estado = "DESACTIVADO";
                    gestionarUsuario.ActualizarDatosUsuario(usu);
                }
            }
            else
            {
                usu = (Usuario)Session["login"];
                if (usu.PagosAsociados != null)
                {

                    tabla2.Controls.Add(ConsultarApuestas(gestionarApuesta.getGanancias(usu.Nickname), "Ganador"));
                    tabla.Controls.Add(ConsultarApuestas(gestionarApuesta.GetById(usu.Nickname), "Ganador"));
                    
                }
                else
                {
                    mensaje.alert("El usuario no tiene formas de pago registradas");
                }
            }
        }
    }
    public void organizarEvento(object sender, EventArgs e)
    {
        tabla.Controls.Add(ConsultarApuestas(gestionarApuesta.GetById(usu.Nickname), "Evento"));
        tabla2.Controls.Add(ConsultarApuestas(gestionarApuesta.getGanancias(usu.Nickname), "Evento"));
    }
    public void organizarMonto(object sender, EventArgs e)
    {
        tabla.Controls.Add(ConsultarApuestas(gestionarApuesta.GetById(usu.Nickname), "Monto"));
        tabla2.Controls.Add(ConsultarApuestas(gestionarApuesta.getGanancias(usu.Nickname), "Monto"));
    }
    public void exportarExcel(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        Page page = new Page();
        HtmlForm form = new HtmlForm();

        page.EnableEventValidation = false;

        // Realiza las inicializaciones de la instancia de la clase Page que requieran los diseñadores RAD.
        page.DesignerInitialize();
        page.Controls.Add(form);
        form.Controls.Add(ConsultarApuestas(gestionarApuesta.GetById(usu.Nickname),"Ganador"));
        page.RenderControl(htw);
        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment;filename=Apuestas.xls");
        Response.Charset = "UTF-8";
        Response.ContentEncoding = Encoding.Default;
        Response.Write(sb.ToString());
        Response.End(); 
    }

    public void MostrarApuestas(object sender, EventArgs e)
    {
        if (usu.PagosAsociados != null)
        {
            tabla2.Controls.Add(ConsultarApuestas(gestionarApuesta.getGanancias(usu.Nickname), "Ganador"));
           tabla.Controls.Add(ConsultarApuestas(gestionarApuesta.GetById(usu.Nickname),"Ganador"));
          
        }
        else
        { 
            mensaje.alert("El usuario no tiene formas de pago registradas");
        }
    }
   
 
    public HtmlTable ConsultarApuestas(IList apuestas, string to)
    {
        HtmlTable tableCategoria = new HtmlTable();
        HtmlTableRow r = new HtmlTableRow();
        HtmlTableCell cat = new HtmlTableCell();
        HtmlTableCell imagen = new HtmlTableCell();
        HtmlTableCell cel2 = new HtmlTableCell();
        HtmlTableCell cel3 = new HtmlTableCell();
        HtmlTableCell cel4 = new HtmlTableCell();
        HtmlTableCell cel5 = new HtmlTableCell();
       IList<Apuesta> feoi = new List<Apuesta>();
        foreach (Apuesta p in apuestas)
        {
            feoi.Add(p);
        }
        IEnumerable<Apuesta> toma = feoi;
        if (to == "Ganador")
        {
            toma = feoi.OrderBy(como => como.ProporcionAsociado.Ganador);
        }
        else if (to == "Evento")
        {
            toma = feoi.OrderBy(como => como.ProporcionAsociado.EventoAsociado.NombreEvento);
        }
        else if (to == "Monto") 
        {
           toma = feoi.OrderBy(como => como.Monto);
        }
        cat.Align = "center";
        cat.Width = "200";
        imagen.Width = "30";
        Label categ = new Label();
        categ.Font.Bold = false;
        categ.Font.Name = "Verdana";
        categ.Font.Size = new FontUnit(12);
        categ.Text = "Nombre Evento";
        cat.Controls.Add(categ);

        cel2.Align = "center";
        cel2.Width = "30";
        Label lcel2 = new Label();
        lcel2.Font.Bold = false;
        lcel2.Font.Name = "Verdana";
        lcel2.Font.Size = new FontUnit(12);
        lcel2.Text = "Monto";
        cel2.Controls.Add(lcel2);

        cel3.Align = "center";
        cel3.Width = "30";
        Label lcel3 = new Label();
        lcel3.Font.Bold = false;
        lcel3.Font.Name = "Verdana";
        lcel3.Font.Size = new FontUnit(12);
        lcel3.Text = "Participante";
        cel3.Controls.Add(lcel3);

        cel4.Align = "center";
        cel4.Width = "30";
        Label lcel4 = new Label();
        lcel4.Font.Bold = false;
        lcel4.Font.Name = "Verdana";
        lcel4.Font.Size = new FontUnit(12);
        lcel4.Text = "Ganador";
        cel4.Controls.Add(lcel4);

        cel5.Align = "center";
        cel5.Width = "30";
        Label lcel5 = new Label();
        lcel5.Font.Bold = false;
        lcel5.Font.Name = "Verdana";
        lcel5.Font.Size = new FontUnit(12);
        lcel5.Text = "Tarjeta";
        cel5.Controls.Add(lcel5);

        
        
         r.Cells.Add(imagen);
        r.Cells.Add(cat);
        r.Cells.Add(cel2);
        r.Cells.Add(cel3);
        r.Cells.Add(cel4);
        r.Cells.Add(cel5);
        tableCategoria.Rows.Add(r);
        tableCategoria.BgColor = "0";
        tableCategoria.Width = "450";

        int tamano = apuestas.Count;
        int cont = 0;

        while (cont < tamano)
        {
            Image a = new Image();
            a.ImageUrl = "images/bullet3-gamblingtemplatesdotnet.gif";
            imagen = new HtmlTableCell();
            cat = new HtmlTableCell();
            cel2 = new HtmlTableCell();
            cel3 = new HtmlTableCell();
            cel4 = new HtmlTableCell();
            cel5 = new HtmlTableCell();
            imagen.Controls.Add(a);
            imagen.Width = "30";
            imagen.Align = "center";
            categ = new Label();

            r = new HtmlTableRow();
            r.Cells.Add(imagen);
            cat.Width = "350";
            Label hyperlinkModif = new Label();
            Apuesta tomae = toma.ElementAt(cont);
            hyperlinkModif.Text = toma.ElementAt(cont).ProporcionAsociado.EventoAsociado.NombreEvento+ "\n\r";
            lcel2 = new Label();
            lcel3 = new Label();
            lcel4 = new Label();
            lcel5 = new Label();
            lcel2.Text = ((Apuesta)apuestas[cont]).Monto + "\n\r";
            lcel3.Text = ((Apuesta)apuestas[cont]).ProporcionAsociado.Participante.Nombre + "\n\r";
            lcel4.Text = ((Apuesta)apuestas[cont]).ProporcionAsociado.Ganador+ "\n\r";
            lcel5.Text = ((Apuesta)apuestas[cont]).PagoAsociado.FormaPagoAsociado.Nombre+ "\n\r";
            cat.Align = "center";
            cel2.Align = "center";
            cel3.Align = "center";
            cel4.Align = "center";
            cel5.Align = "center";
            cel2.Controls.Add(lcel2);
            
            cel3.Controls.Add(lcel3);
            cel4.Controls.Add(lcel4);
            cel5.Controls.Add(lcel5);
            cat.Controls.Add(hyperlinkModif);
            r.Cells.Add(cat);
            r.Cells.Add(cel2);
            r.Cells.Add(cel3);
            r.Cells.Add(cel4);
            r.Cells.Add(cel5);
            tableCategoria.Rows.Add(r);
            cont++;
        }
        return tableCategoria;
    }

}
